package teste;

import java.util.List;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import persistencia.PerfilDAO;
import entidades.Perfil;

/**
 * Classe de Teste para a camada de Persistencia da entidade Perfil.
 * 
 * @author Lino Bordin e Lucas Pessoa
 *
 */
public class TestPersistenciaPerfilDao {
	
	private PerfilDAO perfilDao;
	
	Perfil perfil = new Perfil();

	@Before
	public void setUp() throws Exception {
		
		criarDao();
		
	}
	
	/**
	 * Carregando o arquivo do Application Context.
	 */
	private void criarDao() {
		
		ApplicationContext context = new ClassPathXmlApplicationContext("/config/applicationContext.xml");
		perfilDao = (PerfilDAO) context.getBean("perfilProxy");
			
	}
	
	@Test
	public void testShouldSaveProfile(){

		criarDao();
		
		perfil.setIdPerfil(3);
		perfil.setNome("dummy");
		perfil.setAcronimo("pummy");
		
		perfilDao.save(perfil);
		Assert.assertEquals(perfil.getNome(), perfilDao.findPerfil("dummy").getNome());
		Assert.assertEquals(perfil.getAcronimo(), perfilDao.findPerfil("dummy").getAcronimo());
		Assert.assertEquals(perfil.getIdPerfil(), perfilDao.findPerfil("dummy").getIdPerfil());

	}
	
	@Test
	public void testShouldDeleteProfile(){

		criarDao();
		perfilDao.delete(3);

	}
	
	@Test
	public void testShouldListAllProfiles() {
		
		criarDao();
		List<Perfil> lista = perfilDao.listAllProfiles();
		Assert.assertNotNull(lista);
		System.out.println("\nLista de perfis:");
		
		for (int i = 0; i < lista.size(); i++) {
			
			System.out.println("- " + lista.get(i).getNome());
			
		}
		
	}

}
